package com.his.drugstage.mapper;

import com.his.drugstage.pojo.DrugInfo;
import org.apache.ibatis.annotations.Mapper;

import java.util.ArrayList;

@Mapper
/*1、将此类标记为mapper层组件
  2、如果使用的是XML文件方式进行映射，就不需要在Mapper接口上添加@Mapper注解。
  3、@Mapper注解是用于将Mapper接口标记为MyBatis的映射器，以便Spring能够自动扫描并创建代理对象。
  4、对于使用XML文件进行映射的方式，只需确保映射文件的位置和命名正确，并在MyBatis的配置文件中指定正确的映射文件路径即可。*/
public interface DrugstageMapper {
/* 注意：对于增删改操作，要将方法的返回类型设置为int或void，并且不需要在mapper.xml映射文件中填写resultType（返回类型）属性
   原因：在MyBatis中，当执行增删改操作时，返回的结果是受影响的行数。因此，通常情况下不需要在映射文件中指定resultType。
   对于增删改操作，MyBatis会将受影响的行数作为int类型的结果返回。因此，可以将返回类型设置为int，而无需在映射文件中指定resultType。
   如果Mapper接口中方法返回类型是void，那么在映射文件中也不需要指定resultType。这是因为MyBatis不会返回任何结果，只会执行相应的SQL语句。
*/
    /**
     * 添加药品信息
     * @createTime：2023年7月2日11点25分
     * @param：drugInfo
     * @return int
     */
    public int addDrugInfo(DrugInfo drugInfo);

    /**
     * 通过id删除药品信息
     * @param drugInfo
     * @return int
     */
    public int deleteDrugInfoById(DrugInfo drugInfo);

    /**
     * 通过id更改药品信息
     * @param drugInfo
     * @return int
     */
    public int updateDrugInfoById(DrugInfo drugInfo);

    /**
     * 查询所有药品信息
     * @return ArrayList<DrugInfo>
     */
    public ArrayList<DrugInfo> queryAllDrugInfo();

    /**
     * 通过药品编号、药品助记码、药品名称查询药品信息
     * @param drugInfo
     * @return ArrayList<DrugInfo>
     */
    public ArrayList<DrugInfo> queryDrugInfoByConditions(DrugInfo drugInfo);

}
